package util

// 双指针删除有序数组重复项
func DeleteDuplicates(list []int) (result int) {
	if len(list) == 0 {
		return 0
	}
	var i = 0
	for j := 0; j < len(list); j++ {
		// 如果下标为i的和下标为j的数相同，继续循环
		// 如果不同，移动i并且把下标为i的值替换为当前循环到的值
		if list[j] != list[i] {
			i++
			list[i] = list[j]
		}
	}
	return i + 1
}

// 双指针获取数组中心下标
func GetCenterIndex(list []int) (result int) {
	var total = 0
	var sum = 0
	// 先获取数组总和
	for i := 0; i < len(list); i++ {
		total += list[i]
	}
	// 如果某个数组存在中心下标的话，左侧数值之和的两倍加中心下标的和等于数组总和
	for i := 0; i < len(list); i++ {
		// 判断左侧数值的和的两倍加下一个下标的值是否等于数组的总和
		if sum*2+list[i] == total {
			return i
		}
		sum += list[i]
	}
	return -1
}
